home *** CD-ROM | disk | FTP | other *** search
- '**************************************************************************
- '* Design It! 3-D Setup
- '*
- '* Lovingly hand-crafted
- '* and polished by Cynthia Pettit,
- '* with *lots* of help from John Alspaugh
- '* Copyright 1993-1994 Virtus Corporation. All Rights Reserved.
- '*
- '**************************************************************************
-
- '''''$DEFINE DEBUG ''Define for script development/debugging
-
- ''Bitmap ID
- CONST LOGO = 1
-
- ''File Types
- GLOBAL RADIOBUTTON$ ''Option selection from OptFiles1 option dialog.
- GLOBAL PROGGROUP$ 'Name of the program manager group
- GLOBAL ENORMOUS% ''too big -- true or false? (1 or 0)
-
- ''Dialog list symbol names
- GLOBAL CHECKSTATES$
- GLOBAL STATUSTEXT$
- GLOBAL DRIVETEXT$
- GLOBAL ERRORDLG%
- GLOBAL GREYEDLIST$
-
- ''Potential error code for the magic exit
- GLOBAL POTENTIALERROR%
-
-
-
- '' includes must be in this order!
- '$INCLUDE 'setupapi.inc'
- '$INCLUDE 'msdetect.inc'
- '$INCLUDE 'vutility.inc' '' handy utility routines
- '$INCLUDE 'dsnlocal.inc' '' the local definitions we use
- '$INCLUDE 'vsupport.inc' '' our more general routines (requires vlocal.inc)
-
-
-
- '$ifdef PROGRAM
- ''Dialog ID's
- CONST WELCOME_DLG = 100
- CONST BILLBOARD0 = 110
- CONST BILLBOARD1 = 111
- CONST BILLBOARD2 = 112
- CONST BILLBOARD3 = 113
- CONST BILLBOARD4 = 114
- CONST BILLBOARD5 = 115
- CONST ASKQUIT_DLG = 200
- CONST DESTPATH_DLG = 300
- CONST EXITFAILURE_DLG = 400
- CONST EBADSERIAL_DLG = 401
- CONST ENOINSTALL_DLG = 402
- CONST CORRUPT_FILES_DLG = 412
- CONST EXITQUIT_DLG = 600
- CONST EXITSUCCESS_DLG = 700 '' ok, and you should restart (but you don't have to)
- CONST EXITSUCCESSBYE_DLG= 701 '' ok, and you will now restart
- CONST WELCOMEHELP_DLG = 900
- CONST CUSTINSTHELP_DLG = 901
- CONST PATHHELP_DLG = 902
- CONST PERSONALHELP_DLG = 903
- CONST INSTALLHELP_DLG = 904
- CONST INSTALL_DLG = 6100
- CONST CUSTINST_DLG = 6200
- CONST TOOBIG_DLG = 6300
- CONST BADPATH_DLG = 6400
- CONST PERSONALIZE_DLG = 7500
- '$ELSE IF LIBRARY
- CONST WELCOME_DLG = 150
- CONST ASKQUIT_DLG = 250
- CONST DESTPATH_DLG = 350
- CONST NO_WIN_3_1_DLG = 410
- CONST WRONG_CPU_DLG = 411
- CONST CORRUPT_FILES_DLG = 412
- CONST EXITFAILURE_DLG = 450
- CONST EXITQUIT_DLG = 650
- CONST EXITSUCCESS_DLG = 750
- CONST WELCOMEHELP_DLG = 950
- CONST PATHHELP_DLG = 952
- CONST TOOBIG_DLG = 6350
- CONST NOVRDIR_DLG = 6351
- CONST LOOKFORFILE_DLG = 6352
- CONST BADPATH_DLG = 6400
- '$endif
-
-
- INIT:
- CUIDLL$ = "mscuistf.dll" 'Custom user interface dll
- HELPPROC$ = "FHelpDlgProc" 'Help dialog procedure
- POTENTIALERROR% = 0
-
- VL_Initialize '' init all the local vars
- VL_InitDiskCosts '' init the disk cost stuff
- VL_InitDirNames '' init the directory naming stuff
- VL_InitReadmeFileNames
-
- VMaximizeFrame
-
- SetBitmap CUIDLL$, LOGO
- SetTitle PRODUCTNAME$
-
- '' test that the system is up to our requirements. If not, Bye!
- sysOk% = VIsSystemAdequate()
- IF sysOk% = 0 THEN
- GOTO ENDITALL '' byeeee!
- END IF
-
- '' load INF file
- szInf$ = GetSymbolValue("STF_SRCINFPATH")
- IF szInf$ = "" THEN
- szInf$ = GetSymbolValue("STF_CWDDIR") + INFFILENAME$
- END IF
- ReadInfFile szInf$
-
- ''CustInst list symbols
- CHECKSTATES$ = "CheckItemsState"
- STATUSTEXT$ = "StatusItemsText"
- DRIVETEXT$ = "DriveStatusText"
- GREYEDLIST$ = "OptionsGreyed"
- FOR i% = 1 TO N_CHECKBOXES STEP 1
- AddListItem CHECKSTATES$, "ON"
- NEXT i%
- FOR i% = 1 TO N_CHECKBOXES STEP 1
- AddListItem STATUSTEXT$, ""
- NEXT i%
- FOR i% = 1 TO 7 STEP 1 '' there are 7 items in DriveStatusText. Always.
- AddListItem DRIVETEXT$, ""
- NEXT i%
- ReplaceListItem DRIVETEXT$, 7, DESTDIRNAME$
-
- ENORMOUS% = 0
- RADIOBUTTON$ = "1"
-
- VL_RecalcPath
-
- '$IFDEF DEBUG
- i% = SetSizeCheckMode(scmOnIgnore) '' could use scmOff; def = scmOnFatal
- '$ENDIF 'DEBUG
-
- WELCOME:
- sz$ = UIStartDlg(CUIDLL$, WELCOME_DLG, "FInfoDlgProc", WELCOMEHELP_DLG, HELPPROC$)
- IF sz$ = "CONTINUE" THEN
- UIPop 1
- ELSE
- GOSUB ASKQUIT
- GOTO WELCOME
- END IF
-
-
- '$IFDEF OPTION
- '$ifdef 0
- ENORMOUS%= VSetDriveStatus(DESTDIRNAME$, DRIVETEXT$)
- IF ENORMOUS% <> 0 THEN
- RADIOBUTTON$ = "2"
- AddListItem GREYEDLIST$, "1" '' grey full install
- '' GOTO CUSTINST
- END IF
- '$endif
-
- INSTALLOPT:
- SetSymbolValue "RadioDefault", RADIOBUTTON$ '' set the button
-
- sz$ = UIStartDlg(CUIDLL$, INSTALL_DLG, "FRadioDlgProc", INSTALLHELP_DLG, HELPPROC$)
- RADIOBUTTON$ = GetSymbolValue("ButtonChecked")
-
- ENORMOUS%= VSetDriveStatus(DESTDIRNAME$, DRIVETEXT$)
- IF sz$ = "CONTINUE" THEN
- UIPop 1
- IF RADIOBUTTON$ = "1" THEN
- GOSUB GETPATH
- GOTO INSTALL
- ELSEIF RADIOBUTTON$ = "2" THEN
- '' we get the path within the custinst area
- GOTO CUSTINST
- ELSE
- GOSUB GETPATH
- GOTO INSTALL
- END IF
- ELSEIF sz$ = "REACTIVATE" THEN
- GOTO INSTALLOPT
- ELSEIF sz$ = "EXIT" THEN
- GOSUB ASKQUIT
- GOTO INSTALLOPT
- ELSE
- UIPop 1
- GOTO CUSTINST
- END IF
-
-
-
- CUSTINST:
- ''Start up the custom installation dialog box
- sz$ = UIStartDlg(CUIDLL$, CUSTINST_DLG, "FCustInstDlgProc", CUSTINSTHELP_DLG, HELPPROC$)
-
- i% = VL_DoCheckItems(sz$)
- IF i% = 1 THEN
- ENORMOUS% = VSetDriveStatus(DESTDIRNAME$, DRIVETEXT$)
- GOTO CUSTINST
- END IF
-
- IF sz$ = "CONTINUE" THEN
- ''Install only if it will fit.
- IF ENORMOUS% <> 0 THEN
- GOSUB TOOBIG
- GOTO CUSTINST
- ENDIF
-
- UIPop 1 ''Kill the dialog box
- GOTO INSTALL
- ELSEIF sz$ = "PATH" THEN
- GOTO GETPATH
- ELSEIF sz$ = "REACTIVATE" THEN
- VL_RecalcPath
- ENORMOUS% = VSetDriveStatus(DESTDIRNAME$, DRIVETEXT$)
- GOTO CUSTINST
- ELSEIF sz$ = "BACK" THEN
- UIPop 1
- GOTO INSTALLOPT
- ELSE
- GOSUB ASKQUIT
- GOTO CUSTINST
- END IF
-
-
- '$ENDIF 'OPTION
-
-
-
- GETPATH:
-
- '$IFDEF LIBRARY
- i% = VFindExe(EXEFILENAME$, DATAFILEEXT$, DESTDIRNAME$)
-
- NOEXE:
- IF i% = 0 THEN
- DESTDIRNAME$ = WINDRIVE$ + ":\" + DEFDIRNAME$ '' fallback
- sz$ = UIStartDlg(CUIDLL$, NOVRDIR_DLG, "FInfo0DlgProc", 0, "")
- IF sz$ = "REACTIVATE" THEN
- GOTO NOEXE
- END IF
- UIPop 1
- END IF
- '$ENDIF 'LIBRARY
-
- VL_RecalcPath
-
- SetSymbolValue "EditTextIn", DESTDIRNAME$
- SetSymbolValue "EditFocus", "END"
- GETPATHL1:
- sz$ = UIStartDlg(CUIDLL$, DESTPATH_DLG, "FEditDlgProc", PATHHELP_DLG, HELPPROC$)
-
- IF sz$ = "CONTINUE" THEN
- olddest$ = DESTDIRNAME$
- DESTDIRNAME$ = GetSymbolValue("EditTextOut")
-
- ''Validate new path.
- IF IsDirWritable(DESTDIRNAME$) = 0 THEN
- GOSUB BADPATH
- GOTO GETPATHL1
- END IF
- UIPop 1
-
- 'Truncate display if too long.
- IF LEN(DEST$) > 23 THEN
- ReplaceListItem DRIVETEXT$, 7, MID$(DESTDIRNAME$, 1, 23)+"..."
- ELSE
- ReplaceListItem DRIVETEXT$, 7, DESTDIRNAME$
- END IF
-
- ''Recalc if path changed.
- IF (olddest$ <> DESTDIRNAME$) AND (olddest$ <> DESTDIRNAME$+"\") AND (olddest$+"\" <> DESTDIRNAME$) THEN
- VL_RecalcPath
- ENORMOUS% = VSetDriveStatus(DESTDIRNAME$, DRIVETEXT$)
- END IF
-
- olddest$ = ""
- '$IFDEF OPTION
- IF RADIOBUTTON$ = "1" THEN '' this is the quicky option, right?
- '' check that the new path does not make us need too much disk space
- IF ENORMOUS% <> 0 THEN
- GOSUB TOOBIG '' not enough disk space
-
- RADIOBUTTON$ = "2"
- GOTO CUSTINST '' custom install necessary.
- END IF
- '' otherwise, keep going to the next section
- ELSEIF RADIOBUTTON$ = "2" THEN
- GOTO CUSTINST '' return to the custom install
- ELSE
- FOR i% = 1 TO N_CHECKBOXES STEP 1
- ReplaceListItem CHECKSTATES$, i%, "OFF"
- NEXT i%
- GOTO INSTALL
- END IF
-
- '$ELSE
- IF ENORMOUS% <> 0 THEN
- GOSUB TOOBIG '' not enough disk space
- GOTO GETPATHL1 '' try again
- END IF
- '$ENDIF '' OPTION
-
- GOTO INSTALL
-
-
- ELSEIF sz$ = "REACTIVATE" THEN
- '' VL_RecalcPath
- '' ENORMOUS% = VSetDriveStatus(DESTDIRNAME$, DRIVETEXT$)
- GOTO GETPATHL1
- ELSEIF sz$ = "EXIT" THEN
- GOSUB ASKQUIT
- GOTO GETPATHL1
- ELSEIF sz$ = "BACK" THEN
- UIPop 1
-
- '$IFDEF OPTION
- IF (RADIOBUTTON$ = "1") AND (ENORMOUS% = 0) THEN
- GOTO INSTALLOPT
- ELSEIF RADIOBUTTON = "2" THEN
- GOTO CUSTINST
- ELSE
- GOTO INSTALLOPT
- END IF
- '$ELSE
- GOTO WELCOME
- '$ENDIF '' OPTION
-
- ELSE
- GOTO GETPATHL1
- END IF
-
-
- INSTALL:
-
- VL_DoTheInstall
-
- '$IFDEF PROGRAM
- IF VL_ShouldWeSerialize() = 1 THEN
- GOSUB SERIALIZE
- END IF
- '$ENDIF 'PROGRAM
-
- VL_MakeTheAppIcons
-
- VL_MakeTheReadmeIcons
-
- QUIT:
- ON ERROR GOTO ERRQUIT
-
- IF ERR = 0 THEN
- Restart% = RestartListEmpty()
- IF Restart% = 0 THEN
- ERRORDLG% = EXITSUCCESSBYE_DLG
- ELSE
- ERRORDLG% = EXITSUCCESS_DLG
- END IF
- ELSEIF ERR = STFQUIT THEN
- ERRORDLG% = EXITQUIT_DLG
- ELSEIF ERR = ENOINSTALL THEN
- ERRORDLG% = ENOINSTALL_DLG
- ELSE
- ERRORDLG% = EXITFAILURE_DLG
- END IF
- QUITL1:
- sz$ = UIStartDlg(CUIDLL$, ERRORDLG%, "FInfo0DlgProc", 0, "")
- IF sz$ = "REACTIVATE" THEN
- GOTO QUITL1
- END IF
- UIPop 1
-
- IF ERR = 0 THEN
- VL_ShowIconsOkay
- END IF
-
- GOTO ENDITALL
-
- ERRQUIT:
- sz$ = UIStartDlg(CUIDLL$, CORRUPT_FILES_DLG, "FInfo0DlgProc", 0, "")
- IF sz$ = "REACTIVATE" THEN
- GOTO ERRQUIT
- END IF
- UIPop 1
- GOTO ENDITALL
-
- ENDITALL:
- END ''That's all, folks!
-
-
-
- TOOBIG:
- sz$ = UIStartDlg(CUIDLL$, TOOBIG_DLG, "FInfo0DlgProc", 0, "")
- IF sz$ = "REACTIVATE" THEN
- VL_RecalcPath
- ENORMOUS% = VSetDriveStatus(DESTDIRNAME$, DRIVETEXT$)
- GOTO TOOBIG
- END IF
- UIPop 1
- RETURN
-
-
-
- BADPATH:
- sz$ = UIStartDlg(CUIDLL$, BADPATH_DLG, "FInfo0DlgProc", 0, "")
- IF sz$ = "REACTIVATE" THEN
- VL_RecalcPath
- ENORMOUS% = VSetDriveStatus(DESTDIRNAME$, DRIVETEXT$)
- GOTO BADPATH
- END IF
- UIPop 1
- RETURN
-
-
-
- ASKQUIT:
- sz$ = UIStartDlg(CUIDLL$, ASKQUIT_DLG, "FQuitDlgProc", 0, "")
-
- IF sz$ = "EXIT" THEN
- UIPopAll
- ERROR STFQUIT
- ELSEIF sz$ = "REACTIVATE" THEN
- GOTO ASKQUIT
- ELSE
- UIPop 1
- END IF
- RETURN
-
-
- 'IFDEF SERIAL
- SERIALIZE:
- SetSymbolValue "ProgramLocation", VMakePath(DESTDIRNAME$,EXEFILENAME$)
- sz$ = UIStartDlg(CUIDLL$, PERSONALIZE_DLG, "FInitDlgProc", PERSONALHELP_DLG, HELPPROC$)
-
- IF sz$ = "EXIT" THEN
- POTENTIALERROR% = EBADSERIAL
- GOSUB ASKQUIT
- POTENTIALERROR% = 0
- GOTO SERIALIZE
- ELSEIF sz$ = "REACTIVATE" THEN
- GOTO SERIALIZE
- ELSEIF sz$ = "CONTINUE" THEN
- UIPop 1
- ELSE
- POTENTIALERROR% = EBADSERIAL
- ERROR EBADSERIAL
- END IF
- RETURN
- 'ENDIF 'SERIAL
-
-
-
-
-
-